<
parallel, operating system> A form of
multitasking where it
is the responsibility of the currently running task to give up
the processor to allow other tasks to run. This contrasts
with
pre-emptive multitasking where the task
scheduler
periodically suspends the running task and restarts another.
Cooperative multitasking requires the programmer to place
calls at suitable points in his code to allow his task to be
descheduled which is not always easy if there is no obvious
top-level
main loop or some routines run for a long time.
If a task does not allow itself to be descheduled all other
tasks on the system will appear to "freeze" and will not
respond to user action.
The advantage of
cooperative multitasking is that the
programmer knows where the program will be descheduled and can
make sure that this will not cause unwanted interaction with
other processes. Under
pre-emptive multitasking, the
scheduler must ensure that sufficient state for each process
is saved and restored that they will not interfere. Thus
cooperative multitasking can have lower
overheads than
pre-emptive
multitasking because of the greater control it
offers over when a task may be descheduled.
Cooperative multitasking is used in
RISC OS, {Microsoft
Windows} and
Macintosh System 7.
(1995-03-20)